import { Asset } from "cc"
import { ITbDecode } from "./ITbDecode";
import { LogMgr } from "../log/LogMgr";

export abstract class TbContainer<T>{
    cfgs:T[] = []//所有配置数据
    cfgMap:Map<number,T> = new Map()//配置数据id和数据映射
    decoder:ITbDecode<any> = null//数据解码器
    //最大id
    maxId:number;
    //最小id
    minId:number;
    //数据个数
    size:number;

    constructor(){
        
    }

    abstract getTbName():string;



    public getCfgById(id:number){
        return this.cfgMap.get(id)
    }
    public getcfgs(){
        return this.cfgs
    }

    loadData(){
        if(!this.decoder){
            LogMgr.err("没有注册解码器！表名："+this.getTbName())
        }
        this.decoder.decode(this)
    }

    //一般是对这个配置表的数据再组装
    public abstract afterDecode(): void;
}